package reply

type PongReply struct{}

var pongBytes = []byte("+PONG\r\n")

func (p *PongReply) ToBytes() []byte {
	return pongBytes
}

var thePongReply = &PongReply{}

func MakePongReply() *PongReply {
	return thePongReply
}

type OkReply struct{}

var okBytes = []byte("+ok\r\n")

func (o *OkReply) ToBytes() []byte {
	return okBytes
}

var theOkReply = &OkReply{}

func MakeOkReply() *OkReply {
	return theOkReply
}

type NullBulkReply struct{}

var nullBulkBytes = []byte("$-1\r\n")

func (n *NullBulkReply) ToBytes() []byte {
	return nullBulkBytes
}

var theNullBulkReply = &NullBulkReply{}

func MakeNullBulkReply() *NullBulkReply {
	return theNullBulkReply
}

type EmptyMultiBulkReply struct{}

var emptyMultiBulkBytes = []byte("*0\r\n")

func (e *EmptyMultiBulkReply) ToBytes() []byte {
	return emptyMultiBulkBytes
}

var theEmptyMultiBulkReply = &EmptyMultiBulkReply{}

func MakeEmptyMultiBulkReply() *EmptyMultiBulkReply {
	return theEmptyMultiBulkReply
}

type NoReply struct{}

var noReplyBytes = []byte("")

func (n *NoReply) ToBytes() []byte {
	return noReplyBytes
}

var theNoReply = &NoReply{}

func MakeNoReply() *NoReply {
	return theNoReply
}
